package com.sybil.ot.dominio;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.Valid;
import javax.validation.constraints.Size;

@Entity
@Table(name = "SIL_RESPONSABLES_ZONA")
public class ResponsableZona implements Serializable {

   private static final long serialVersionUID = 1L;
   protected ResponsableZonaPK llave;
   private String plantas;
   private String vehiculos;
   private String bombas;
   private String comentarios;
   private String usuarioCreo;
   private String usuarioModif;
   private Zona zona;
   private Empleado empleado;

   public ResponsableZona() {
   }

   public ResponsableZona(ResponsableZonaPK llave) {
      this.llave = llave;
   }

   public ResponsableZona(ResponsableZonaPK llave, String plantas, String vehiculos,
           String bombas, String comentarios, Zona zona, Empleado empleado) {
      this.llave = llave;
      this.plantas = plantas;
      this.vehiculos = vehiculos;
      this.bombas = bombas;
      this.comentarios = comentarios;
      this.zona = zona;
      this.empleado = empleado;
   }

   @EmbeddedId
   @Valid
   public ResponsableZonaPK getLlave() {
      return llave;
   }

   public void setLlave(ResponsableZonaPK llave) {
      this.llave = llave;
   }

   @Transient
   public String getValorMuestra() {
      return empleado.getNombre() + " " + empleado.getApellidoPaterno() + " "
              + empleado.getApellidoMaterno() + " (" + zona.getDescripcion() + ")";
   }

   @Basic(optional = false)
   @Column(name = "REZO_PLANTAS")
   public String getPlantas() {
      return plantas;
   }

   public void setPlantas(String plantas) {
      this.plantas = plantas;
   }

   @Basic(optional = false)
   @Column(name = "REZO_VEHICULOS")
   public String getVehiculos() {
      return vehiculos;
   }

   public void setVehiculos(String vehiculos) {
      this.vehiculos = vehiculos;
   }

   @Basic(optional = false)
   @Column(name = "REZO_BOMBAS")
   public String getBombas() {
      return bombas;
   }

   public void setBombas(String bombas) {
      this.bombas = bombas;
   }

   @Size(max = 250, message = "La longitud máxima de comentarios es 250 caracteres.")
   @Column(name = "REZO_COMENTARIOS")
   public String getComentarios() {
      return comentarios;
   }

   public void setComentarios(String comentarios) {
      this.comentarios = comentarios;
   }

   @Basic(optional = false)
   @Column(name = "REZO_USUARIO_CREO")
   public String getUsuarioCreo() {
      return usuarioCreo;
   }

   public void setUsuarioCreo(String usuarioCreo) {
      this.usuarioCreo = usuarioCreo;
   }

   @Column(name = "REZO_USUARIO_MODIF")
   public String getUsuarioModif() {
      return usuarioModif;
   }

   public void setUsuarioModif(String usuarioModif) {
      this.usuarioModif = usuarioModif;
   }

   @Valid
   @JoinColumn(name = "REZO_ZONA_CLAVE", referencedColumnName = "ZONA_CLAVE", insertable = false, updatable = false)
   @ManyToOne(optional = false)
   public Zona getZona() {
      return zona;
   }

   public void setZona(Zona zona) {
      this.zona = zona;
   }

   @Valid
   @JoinColumn(name = "REZO_PERS_CODIGO", referencedColumnName = "PERS_CODIGO", insertable = false, updatable = false)
   @ManyToOne(optional = false)
   public Empleado getEmpleado() {
      return empleado;
   }

   public void setEmpleado(Empleado empleado) {
      this.empleado = empleado;
   }

   @Override
   public int hashCode() {
      int hash = 0;
      hash += (llave != null ? llave.hashCode() : 0);
      return hash;
   }

   @Override
   public boolean equals(Object object) {
      if (!(object instanceof ResponsableZona)) {
         return false;
      }
      ResponsableZona other = (ResponsableZona) object;
      if ((this.llave == null && other.llave != null) || (this.llave != null && !this.llave.equals(other.llave))) {
         return false;
      }
      return true;
   }

   @Override
   public String toString() {
      return "ResponsableZona[ llave=" + llave + " ]";
   }
}
